package com.gitee.ed.arithmetic.leetcode.answer.answer_1_100.answer_1_10;

import com.gitee.ed.arithmetic.leetcode.solution.solution_1_100.solution_1_10.Solution3;

/**
 * 标准最佳方案用动态窗口
 *
 * @author hongda.li
 */
public class Answer3 implements Solution3 {

    @Override
    public int lengthOfLongestSubstring(String s) {
        StringBuilder builder = new StringBuilder();

        // 最大的字符串数量
        int max = 0;

        for (char ch : s.toCharArray()) {
            // 字符转字符串
            String of = String.valueOf(ch);

            // 未重复的字符
            if (builder.indexOf(of) == -1) {
                // 拼接当前字符
                builder.append(ch);

                // 保存当前最大长度
                max = Math.max(max, builder.length());
            }
            // 重复的字符
            else {
                // 保存当前最大长度
                max = Math.max(max, builder.length());

                // 清空重复字符之前的所有字符（包含重复字符）
                builder.delete(0, builder.indexOf(of) + 1);

                // 拼接当前字符
                builder.append(of);
            }
        }

        return max;
    }
}
